<!DOCTYPE html>
<html>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <head>promise 测试</head>
    <body> 
        <script>
            // var promise = new Promise((resolve, reject)=> {
            //     resolve(100)
            // })
            // var p1 = promise.then((value)=> {
            //     console.log(value)
            //     return p1
            // })
            // p1.then(()=>{}, reason=> {
            //    console.log(reason)
            // })

            // then 方法参数是可以选填的 没有任何参数的时候，promise的状态向下传递 
            // promise
            // .then()
            // .then()
            // .then(value=> console.log(value))

            // promise.all 接受一个数组，执行次序是按照顺序，并且同时成功 状态才是成功，一个失败状态就是失败
            // function p1() {
            //     return new Promise(function(resolve, reject) {
            //         setTimeout(function() {
            //             resolve('p1')
            //         },2000)
            //     })
            // }
            // function p2() {
            //     return new Promise(function(resolve, reject) {
            //         resolve('p2')
            //     })
            // }
            // Promise.all(['a','b',p1(),p2(),'c']).then(function(result) {
            //     //result  [a, b, p1, p2, c]
            // })

            //promise.resolve  返回一个成功的promise对象
            //如果是普通值 就创建一个promise对象把给定值包裹到其中并返回
            //是promise对象就原封不动的返回出去
            function p() {
                return new Promise(function(resolve, reject) {
                   return resolve('hello');
                })
            }
            Promise.resolve(10).then(value => console.log(value));
            Promise.resolve(p()).then(value => console.log(value));
        </script>
    </body>
</html>